//工具生成，请不要手动修改...
function $(key: string, st: any, ...deps: any[]) {
    deps.length && depFns.push(() => {
        for (let i = 0; i < deps.length; ++i) {
            _[key][deps[i]][3] = _[deps[++i]];
        }
    });
    Object.defineProperty(_, key, { get: () => Object.defineProperty(_, key, { value: st })[key], enumerable: true, configurable: true })[key];
}
const _: any = {}, depFns: (() => void)[] = [];
$("com.size", [["width", 7], ["height", 7]]);
$("com.msg", [["time", 7], ["msg", 22]]);
$("entity.snakeBody", [["id", 7], ["idx", 7], ["x", 19, 0, 2], ["y", 19, 0, 2], ["rot", 19, 0, 2]]);
$("entity.snake", [["id", 7], ["size", 19, 0, 2], ["bodys", 23, 1]], 2, "entity.snakeBody");
$("entity.food", [["id", 7], ["x", 19, 0, 2], ["y", 19, 0, 2], ["rot", 19, 0, 2], ["size", 19, 0, 2], ["color?", 7]]);
$("entity.eatenFood", [["id", 7], ["eaterId", 7]]);
$("snake.snake", [["id", 7], ["name?", 22], ["colors?", 7, 1], ["score?", 7], ["ghost?", 7]]);
depFns.forEach(fn => fn());

export const KProtoStructCount = 14;
export default {
    "1_0": [, [["code", 7], ["protoId", 7]]],
    "1_1": [, [["msgs", 23, 1, _["com.msg"]]]],
    "2_0": [[["name", 22], ["screen", 23, 0, _["com.size"]]], [["pid", 7], ["worldSize", 23, 0, _["com.size"]]]],
    "2_1": [, [["snakeId", 7]]],
    "3_0": [, [["foods?", 23, 1, _["entity.food"]], ["snakes?", 23, 1, _["entity.snake"]]]],
    "3_1": [, [["foods", 23, 1, _["entity.food"]], ["snakes?", 23, 1, _["entity.snake"]]]],
    "3_2": [, [["ids", 7, 1]]],
    "3_3": [, [["foods", 23, 1, _["entity.eatenFood"]]]],
    "4_0": [, [["id", 7]]],
    "4_1": [[["rot", 19, 0, 6]],],
    "4_2": [[["isSprint", 0]],],
    "4_3": [[["screen", 23, 0, _["com.size"]]],],
    "5_0": [, [["type", 7], ["snakes", 23, 1, _["snake.snake"]]]],
    "5_1": [, [["ids", 7, 1]]],
}